package com.haowu.customer.domain.bo;

import com.haowu.common.core.validate.AddGroup;
import com.haowu.common.core.validate.EditGroup;
import com.haowu.common.core.web.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 用户会员业务对象
 *
 * @author lky
 * @date 2023-02-10
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class HwAppCustomerBo extends BaseEntity {

    /**
     * 主键id
     */
    @NotNull(message = "主键id不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 用户编号
     */
    @NotBlank(message = "用户编号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userCode;

    /**
     * 昵称
     */
    @NotBlank(message = "昵称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userName;

    /**
     * 头像
     */
    @NotBlank(message = "头像不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userPath;

    /**
     * 账号
     */
    @NotBlank(message = "账号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userAccount;

    /**
     * 密码
     */
    @NotBlank(message = "密码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String password;

    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userPhone;

    /**
     * openId
     */
    @NotBlank(message = "openId不能为空", groups = { AddGroup.class, EditGroup.class })
    private String openId;

    /**
     * 小程序openId
     */
    @NotBlank(message = "小程序openId不能为空", groups = { AddGroup.class, EditGroup.class })
    private String appletOpenId;

    /**
     * 开放平台unionId
     */
    @NotBlank(message = "开放平台unionId不能为空", groups = { AddGroup.class, EditGroup.class })
    private String unionId;

    /**
     * 性别  0保密 1男 2女
     */
    @NotNull(message = "性别  0保密 1男 2女不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer userSex;

    /**
     * 生日
     */
    @NotNull(message = "生日不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date birthday;

    /**
     * 地区
     */
    @NotBlank(message = "地区不能为空", groups = { AddGroup.class, EditGroup.class })
    private String region;

    /**
     * 发票抬头
     */
    @NotBlank(message = "发票抬头不能为空", groups = { AddGroup.class, EditGroup.class })
    private String invoiceTitle;

    /**
     * 账户余额
     */
    @NotNull(message = "账户余额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal accountBalance;

    /**
     * 状态 0正常 1禁用 2注销
     */
    @NotBlank(message = "状态 0正常 1禁用 2注销不能为空", groups = { AddGroup.class, EditGroup.class })
    private String status;

    /**
     * 设备号
     */
    @NotBlank(message = "设备号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String geTuiCid;

    /**
     * 是否删除 0否1是
     */
    @NotNull(message = "是否删除 0否1是不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer isDelete;

    /**
     * 渠道 0安卓 1ios
     */
    @NotNull(message = "渠道 0安卓 1ios不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer platform;

    /**
     * 支付密码
     */
    @NotBlank(message = "支付密码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String payPassword;

    /**
     * 积分余额
     */
    @NotNull(message = "积分余额不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long scoreBalance;

    /**
     * 积分总额
     */
    @NotNull(message = "积分总额不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long scoreAmount;

    /**
     * 推荐码
     */
    @NotBlank(message = "推荐码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String recommendCode;

    /**
     * 会员等级  1 V1/2 V2 /3  V3/4 V4/5 V5
     */
    @NotNull(message = "会员等级  1 V1/2 V2 /3  V3/4 V4/5 V5不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer vipLevel;

    /**
     * 会员过期时间
     */
    @NotNull(message = "会员过期时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date vipExpireTime;


}
